Content management in peer-to-peer file sharing clouds is a significant problem that needs to be addressed in order to increase the speed and ease with which all or most members of the cloud can receive content being shared.
In the past, large scale content distribution has been carried out using dedicated server farms providing infrastructure-based solutions. In this type of method, each client requiring content forms a dedicated high bandwidth connection to a server at a server farm and downloads content as required. This type of solution is costly for the content provider who must provide and maintain the server farm. Not only is this type of solution costly for content providers but it is not robust in that failure at a server prevents content from being provided to many clients. In addition, the solution is not easily scalable because each server supports a limited number of clients.
More recently a new paradigm for content distribution has emerged based on a distributed architecture using a co-operative network in which nodes share their resources (storage, CPU, bandwidth).
Cooperative content distribution solutions are inherently self-scalable, in that the bandwidth capacity of the system increases as more nodes arrive: each new node requests service from, and, at the same time, provides service to other nodes. Because each new node contributes resources, the capacity of the system grows as the demand increases, resulting in limitless system scalability. With cooperation, the source of the file, i.e. the server, does not need to increase its resources to accommodate the larger user population; this, also, provides resilience to “flash crowds”—a huge and sudden surge of traffic that usually leads to the collapse of the affected server. Therefore, end-system cooperative solutions can be used to efficiently and quickly deliver software updates, critical patches, videos, and other large files to a very large number of users while keeping the cost at the original server low.
Peer-to-peer file sharing protocols typically split a file for distribution into blocks or fragments. These blocks are distributed to nodes in a cloud, for example, in a random order and can be reassembled on a requesting node. Each node connects to remote nodes for the purpose of downloading locally missing blocks, and uploading remotely missing blocks to remote nodes.
The manner of forming and distributing the blocks of content has strong influence on the speed and ease with which all members of the cloud can receive the content being distributed. Managing content by influencing its distribution, in the form of blocks or other units is thus crucial to the performance of a peer-to-peer content distribution system.